# _*_ encoding=utf8 _*_
'''
    用户模型
'''

from django.db import models
from apis.models import App

"""
    模型建立完成后需要对数据库进行迁移
    1.python manage.py makemigrations （检查数据模型是否有变化，如果有变化的话，就会生成一个模型记录这种变化）
    2.python manage.py migrate （运行上一条命令生成的所有文件，从而进行数据库的修改）
"""

# 创建用户模型，需要继承 django 的 Model
class User(models.Model):
    # 模型中所包含的字段名
    # 微信给的ID
    open_id = models.CharField(max_length=32, unique=True) # open_id，最大长度32且唯一
    # 用户昵称
    nickname = models.CharField(max_length=256) # db_index 将该字段定义为索引字段
    # 关注的城市
    focus_cities = models.TextField(default='[]')
    # 关注的星座
    focus_constellations = models.TextField(default='[]')
    # 关注的股票
    focus_stocks = models.TextField(default='[]')

    # 菜单app
    # 多对多关系，映射 apis.models.App 模型
    menu = models.ManyToManyField(App)

    # Django 给的定义索引方法
    class Meta:
        indexes = [
            # models.Index(fields=['nickname']), # 单项索引
            models.Index(fields=['open_id', 'nickname']) # 组合索引
        ]

    def __str__(self):
        return '%s' % (self.nickname)